// TS 中有一些内置的工具类型 方便开发者 快速的从一种类型转化为另外一种类型

interface Person {
    name: string;
    age: number;
    sex: number;
    work: string;
}
// 索引类型
type TypeA = Person['name']
// type Pick<T,K extends keyof T> = {
//     [P in K]:T[P]
// }
// keyof T 代表的是T类型的所有键组成的联合类型
// keyof Person ===> 'name' | 'age' | ' sex' | 'work'
// K extends 'name' | 'age' | ' sex' | 'work' K只能是 Person类型中的键的组合
// type Omit<T,K extends keyof T> = {
//     [P in Exclude<keyof T,K>]:T[P]
// }

type NewType = Pick<Person,'name'|'age'>

type NewType2 = Omit<Person,'work'|'sex'>

type NewType3 = Partial<Person>
type NewType4 = Required<NewType3>

type NewType5 = Readonly<Person>

type NumberOrString = string | number

type NewType6 = Exclude<NumberOrString,number>


export {}




